Proving the correctness of algorithmic debugging for functional programs
نویسندگان
چکیده
This paper presents a formal model of tracing for functional programs based on a small-step operational semantics. The model records the computation of a functional program in a graph which can be utilised for various purposes such as algorithmic debugging. The main contribution of this paper is to prove the correctness of algorithmic debugging for functional programs based on the model. Although algorithmic debugging for functional programs is implemented in several tracers such as Hat, the correctness has not been formally proved before. The difficulty of the proof is to find a suitable induction principle and a sufficiently general induction hypothesis.
منابع مشابه
Logic + control: On program construction and verification
We present a Prolog program (the SAT solver of Howe and King) as a logic program with added control. The control consists of a selection rule (delays of Prolog) and pruning the search space. We construct the logic program together with proofs of its correctness and completeness, with respect to a formal specification. This is augmented by a proof of termination under any selection rule. Correct...
متن کاملLogic + control: An example of program construction
We present a Prolog program (the SAT solver of Howe and King) as a logic program with added control. The control consists of a selection rule (delays of Prolog) and pruning the search space. We construct the logic program together with proofs of its correctness and completeness, with respect to a formal specification. This is augmented by a proof of termination under any selection rule. Correct...
متن کاملReplacing Unevaluated Parts in the Traces of Functional Programs
In functional programming languages such as Haskell, it happens often that some parts of a program are not evaluated because their values are not demanded. In practice, those unevaluated parts are often replaced by a placeholder (e.g. _) in order to keep the trace size smaller. For algorithmic debugging, this also makes the questions shorter and clearer. In this paper, we present a formal model...
متن کاملComputer Science at Kent Replacing Unevaluated Parts in the Traces of Functional Programs
In non-strict functional programming languages such as Haskell, it happens often that some parts of a program are not evaluated because their values are not demanded. In practice, those unevaluated parts are often replaced by a placeholder (e.g. _) in order to keep the trace size smaller. In the process of algorithmic debugging, one needs to answer several questions in order to locate a program...
متن کاملAbstract Diagnosis of Functional Programs
Diagnosis of Functional Programs M. Alpuente, M. Comini, S. Escobar, M. Falaschi, and S. Lucas 1 Departamento de Sistemas Informáticos y Computación-DSIC Technical University of Valencia, Camino de Vera s/n, 46022 Valencia, Spain. {alpuente,sescobar,slucas}@dsic.upv.es 2 Dipartimento di Matematica e Informatica University of Udine, Via delle Scienze 206, 33100 Udine, Italy. {comini,falaschi}@di...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2006